/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ifpb.pp.lp.managedbean;

import ifpb.pp.lp.entity.Produto;
import ifpb.pp.lp.percistence.DAO;
import ifpb.pp.lp.percistence.DAOJPA;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author Gabriella
 */
public class ProdutoManager {

    private DAO dao;
    private Produto produto;
    private DataModel model;

    public ProdutoManager() {        
        this.dao = new DAOJPA();
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public String novoProduto() {
        this.produto = new Produto();
        return "novoProduto";
    }

    public DataModel getTodosProdutos() {
        List<Produto> listaProdutos;
        try {
            listaProdutos = (List<Produto>) dao.listar(Produto.class);
            this.model = new ListDataModel(listaProdutos);
        } catch (Exception ex) {
            System.out.println("ERRO em getTodosProdutos");
            ex.printStackTrace();
        }

        return this.model;
    }

    public String cadastrar() {
        try {
            if (dao.salvar(this.produto)) {
                return novoProduto();
            }
        } catch (Exception ex) {
            System.out.println("ERRO em cadastrarProdutos");
            ex.printStackTrace();
        }

        return "produtoErro";
    }

    public String remover() {
        try {
            if (dao.remover(this.produto)) {
                return "sucesso";
            }
        } catch (Exception ex) {
            System.out.println("ERRO em cadastrarProdutos");
            ex.printStackTrace();
        }
        return "erro";
    }

    public Produto getProdutoParaAtualizarRemover() {
        Produto p = (Produto) this.model.getRowData();
        return p;
    }

    public String editar() {

        Produto p = getProdutoParaAtualizarRemover();
        this.setProduto(p);
        return "editarProduto";

    }

    public String atualizar() {

        Boolean resposta = false;
        try {
            resposta = dao.atualizar(this.produto);
        } catch (Exception ex) {
            System.out.println("ERRO em atualizarProdutos");
            ex.printStackTrace();
        }
        if (resposta) {
            return "produtoSucesso";
        }
        return "produtoErro";
    }
}
